<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">$</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">gmwk</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>  2</span> 
<span class='line'>  3</span> </span><span class="WHIT">    </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">Router</span><span class="PUNC">(</span><span class="NAME">Options</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>  4</span> </span><span class="WHIT">    
<span class='line'>  5</span>       </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">self</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>  6</span> </span><span class="WHIT">      </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">sClassName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Options.sClassName</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>  7</span> </span><span class="WHIT">      </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">aHistory</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>  8</span> </span><span class="WHIT">      </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">nHistoryLength</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">;</span><span class="WHIT">  </span><span class="COMM">// This does not affect browser back button behaviour</span><span class="WHIT">
<span class='line'>  9</span> </span><span class="WHIT">      </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">sControlParam</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"l"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 10</span> </span><span class="WHIT">      </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">Controller</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// Do not give this a value, must be undefined initially</span><span class="WHIT">
<span class='line'> 11</span> </span><span class="WHIT">      </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">Privileged</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">// These layouts require authenticated users</span><span class="WHIT">
<span class='line'> 12</span> </span><span class="WHIT">        </span><span class="NAME">Dashboard</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="WHIT">
<span class='line'> 13</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 14</span> </span><span class="WHIT">      
<span class='line'> 15</span>       </span><span class="COMM">// Public constants</span><span class="WHIT">
<span class='line'> 16</span> </span><span class="WHIT">      </span><span class="NAME">this.PARAMS_OVERRIDE_STATE</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 17</span> </span><span class="WHIT">      </span><span class="NAME">this.STATE_OVERRIDE_PARAMS</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 18</span> </span><span class="WHIT">      </span><span class="NAME">this.PARAMS_REPLACE_STATE</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 19</span> </span><span class="WHIT">      
<span class='line'> 20</span>       </span><span class="NAME">$</span><span class="PUNC">(</span><span class="NAME">window</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="WHIT">
<span class='line'> 21</span> </span><span class="WHIT">          </span><span class="STRN">"hashchange"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'> 22</span> </span><span class="WHIT">          </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 23</span> </span><span class="WHIT">              </span><span class="COMM">// console.info("hashchange", e.fragment)</span><span class="WHIT">
<span class='line'> 24</span> </span><span class="WHIT">              </span><span class="NAME">fHashChange</span><span class="PUNC">(</span><span class="NAME">e.fragment</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 25</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 26</span> </span><span class="WHIT">      </span><span class="PUNC">)</span><span class="WHIT">
<span class='line'> 27</span> </span><span class="WHIT">          
<span class='line'> 28</span>       </span><span class="COMM">// Initialize empty previous fragment</span><span class="WHIT">
<span class='line'> 29</span> </span><span class="WHIT">      </span><span class="NAME">EmptyFragment</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 30</span> </span><span class="WHIT">      </span><span class="NAME">EmptyFragment</span><span class="PUNC">[</span><span class="NAME">sControlParam</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 31</span> </span><span class="WHIT">      </span><span class="NAME">fRememberURLFragment</span><span class="PUNC">(</span><span class="NAME">EmptyFragment</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 32</span> </span><span class="WHIT">      
<span class='line'> 33</span>       </span><span class="COMM">// console.info("---------> Router constructed");</span><span class="WHIT">
<span class='line'> 34</span> </span><span class="WHIT">      
<span class='line'> 35</span>       </span><span class="NAME">this.setControlParam</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">sMyControlParam</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 36</span> </span><span class="WHIT">          </span><span class="NAME">sControlParam</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">sMyControlParam</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 37</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 38</span> </span><span class="WHIT">  
<span class='line'> 39</span>       </span><span class="NAME">this.route</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 40</span> </span><span class="WHIT">          </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">CurrentFragment</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">$.deparam.fragment</span><span class="PUNC">(</span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 41</span> </span><span class="WHIT">          </span><span class="COMM">// Do not route if sControlParam missing or class undefined</span><span class="WHIT">
<span class='line'> 42</span> </span><span class="WHIT">          </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT">
<span class='line'> 43</span> </span><span class="WHIT">              </span><span class="PUNC">(</span><span class="NAME">CurrentFragment</span><span class="PUNC">[</span><span class="NAME">sControlParam</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> 
<span class='line'> 44</span>               </span><span class="PUNC">(</span><span class="NAME">CurrentFragment</span><span class="PUNC">[</span><span class="NAME">sControlParam</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT">
<span class='line'> 45</span> </span><span class="WHIT">              </span><span class="PUNC">(</span><span class="NAME">gmwk.classes</span><span class="PUNC">[</span><span class="NAME">CurrentFragment</span><span class="PUNC">[</span><span class="NAME">sControlParam</span><span class="PUNC">]</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'> 46</span> </span><span class="WHIT">          </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 47</span> </span><span class="WHIT">              </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 48</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 49</span> </span><span class="WHIT">          </span><span class="NAME">self.trigger</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 50</span> </span><span class="WHIT">          </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 51</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 52</span> </span><span class="WHIT">  
<span class='line'> 53</span>       </span><span class="NAME">this.load</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">Options</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">nMode</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 54</span> </span><span class="WHIT">          </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">nMode</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 55</span> </span><span class="WHIT">              </span><span class="NAME">nMode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">self.PARAMS_OVERRIDE_STATE</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 56</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 57</span> </span><span class="WHIT">          </span><span class="NAME">fSetURLFragment</span><span class="PUNC">(</span><span class="NAME">Options</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">nMode</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 58</span> </span><span class="WHIT">          </span><span class="COMM">// Manually trigger hashchange to handle page reload</span><span class="WHIT">
<span class='line'> 59</span> </span><span class="WHIT">          </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">Controller</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 60</span> </span><span class="WHIT">              </span><span class="NAME">self.trigger</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 61</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 62</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 63</span> </span><span class="WHIT">      
<span class='line'> 64</span>       </span><span class="NAME">this.notFound</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 65</span> </span><span class="WHIT">          </span><span class="NAME">fNotFound</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 66</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 67</span> </span><span class="WHIT">      
<span class='line'> 68</span>       </span><span class="NAME">this.trigger</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 69</span> </span><span class="WHIT">          </span><span class="NAME">$</span><span class="PUNC">(</span><span class="NAME">window</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">trigger</span><span class="PUNC">(</span><span class="STRN">'hashchange'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 70</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 71</span> </span><span class="WHIT">      
<span class='line'> 72</span>       </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">fRememberURLFragment</span><span class="PUNC">(</span><span class="NAME">Fragment</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 73</span> </span><span class="WHIT">          </span><span class="COMM">// Add current URL to the history</span><span class="WHIT">
<span class='line'> 74</span> </span><span class="WHIT">          </span><span class="NAME">aHistory.push</span><span class="PUNC">(</span><span class="NAME">Fragment</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 75</span> </span><span class="WHIT">          </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">aHistory.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NAME">nHistoryLength</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 76</span> </span><span class="WHIT">              </span><span class="COMM">// Trim the stack</span><span class="WHIT">
<span class='line'> 77</span> </span><span class="WHIT">              </span><span class="NAME">aHistory.splice</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 78</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 79</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 80</span> </span><span class="WHIT">  
<span class='line'> 81</span>       </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">fGetURLFragment</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 82</span> </span><span class="WHIT">          </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">$.deparam.fragment</span><span class="PUNC">(</span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 83</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 84</span> </span><span class="WHIT">      
<span class='line'> 85</span>       </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">fSetURLFragment</span><span class="PUNC">(</span><span class="NAME">Options</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">nMode</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 86</span> </span><span class="WHIT">          </span><span class="NAME">$.bbq.pushState</span><span class="PUNC">(</span><span class="NAME">Options</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">nMode</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 87</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 88</span> </span><span class="WHIT">      
<span class='line'> 89</span>       </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">fHashChange</span><span class="PUNC">(</span><span class="NAME">sFragment</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 90</span> </span><span class="WHIT">          </span><span class="NAME">console.info</span><span class="PUNC">(</span><span class="STRN">"---------> fHashChange"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">aHistory</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 91</span> </span><span class="WHIT">          </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">CurrentFragment</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">$.deparam</span><span class="PUNC">(</span><span class="NAME">sFragment</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 92</span> </span><span class="WHIT">          </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">PreviousFragment</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">aHistory</span><span class="PUNC">[</span><span class="NAME">aHistory.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 93</span> </span><span class="WHIT">          </span><span class="NAME">fRememberURLFragment</span><span class="PUNC">(</span><span class="NAME">CurrentFragment</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 94</span> </span><span class="WHIT">          </span><span class="COMM">// Do not route if sControlParam missing</span><span class="WHIT">
<span class='line'> 95</span> </span><span class="WHIT">          </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">CurrentFragment</span><span class="PUNC">[</span><span class="NAME">sControlParam</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">""</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">CurrentFragment</span><span class="PUNC">[</span><span class="NAME">sControlParam</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 96</span> </span><span class="WHIT">              </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 97</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 98</span> </span><span class="WHIT">          </span><span class="COMM">// Show the user where he is, also makes back button more useable</span><span class="WHIT">
<span class='line'> 99</span> </span><span class="WHIT">          </span><span class="NAME">document.title</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"GMWK "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">CurrentFragment</span><span class="PUNC">[</span><span class="NAME">sControlParam</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>100</span> </span><span class="WHIT">          </span><span class="COMM">//console.info(CurrentFragment[sControlParam], "bAuthorized", gmwk.bAuthorized, "Privileged", Privileged[CurrentFragment[sControlParam]]);</span><span class="WHIT">
<span class='line'>101</span> </span><span class="WHIT">          </span><span class="COMM">// Check credentials for privileged layouts</span><span class="WHIT">
<span class='line'>102</span> </span><span class="WHIT">          </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT">
<span class='line'>103</span> </span><span class="WHIT">              </span><span class="PUNC">(</span><span class="NAME">Privileged</span><span class="PUNC">[</span><span class="NAME">CurrentFragment</span><span class="PUNC">[</span><span class="NAME">sControlParam</span><span class="PUNC">]</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT">
<span class='line'>104</span> </span><span class="WHIT">              </span><span class="PUNC">!</span><span class="NAME">gmwk.bAuthorized</span><span class="WHIT">
<span class='line'>105</span> </span><span class="WHIT">          </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>106</span> </span><span class="WHIT">              </span><span class="NAME">console.info</span><span class="PUNC">(</span><span class="STRN">"redirect"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>107</span> </span><span class="WHIT">              </span><span class="COMM">// Ask for credentials</span><span class="WHIT">
<span class='line'>108</span> </span><span class="WHIT">              </span><span class="NAME">self.load</span><span class="PUNC">(</span><span class="WHIT">
<span class='line'>109</span> </span><span class="WHIT">                  </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>110</span> </span><span class="WHIT">                      </span><span class="NAME">l</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"Login"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>111</span> </span><span class="WHIT">                      </span><span class="NAME">r</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">CurrentFragment</span><span class="PUNC">[</span><span class="NAME">sControlParam</span><span class="PUNC">]</span><span class="WHIT">
<span class='line'>112</span> </span><span class="WHIT">                  </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>113</span> </span><span class="WHIT">              </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>114</span> </span><span class="WHIT">              </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>115</span> </span><span class="WHIT">          </span><span class="COMM">// Fragment has changed</span><span class="WHIT">
<span class='line'>116</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">gmwk.compareObjects</span><span class="PUNC">(</span><span class="NAME">PreviousFragment</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">CurrentFragment</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>117</span> </span><span class="WHIT">              </span><span class="COMM">//console.info("fragment changed", CurrentFragment[sControlParam]);</span><span class="WHIT">
<span class='line'>118</span> </span><span class="WHIT">              </span><span class="COMM">//console.info("---> fragment changed");</span><span class="WHIT">
<span class='line'>119</span> </span><span class="WHIT">              </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bControlParamChanged</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">PreviousFragment</span><span class="PUNC">[</span><span class="NAME">sControlParam</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">CurrentFragment</span><span class="PUNC">[</span><span class="NAME">sControlParam</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>120</span> </span><span class="WHIT">              </span><span class="COMM">// TODO: Calls gmwk.fLoadClass before doing this check,</span><span class="WHIT">
<span class='line'>121</span> </span><span class="WHIT">              </span><span class="COMM">// otherwise all classes used a layout controllers must be included in index.html</span><span class="WHIT">
<span class='line'>122</span> </span><span class="WHIT">              </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bControllerClassDefined</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">gmwk.classes</span><span class="PUNC">[</span><span class="NAME">CurrentFragment</span><span class="PUNC">[</span><span class="NAME">sControlParam</span><span class="PUNC">]</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>123</span> </span><span class="WHIT">              </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bControllerValid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>124</span> </span><span class="WHIT">              </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">bControllerClassDefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>125</span> </span><span class="WHIT">                  </span><span class="NAME">bControllerValid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">Controller</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">gmwk.classes</span><span class="PUNC">[</span><span class="NAME">CurrentFragment</span><span class="PUNC">[</span><span class="NAME">sControlParam</span><span class="PUNC">]</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>126</span> </span><span class="WHIT">              </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>127</span> </span><span class="WHIT">              </span><span class="COMM">/*
<span class='line'>128</span>               console.info("bControlParamChanged", bControlParamChanged);
<span class='line'>129</span>               console.info("bControllerClassDefined", bControllerClassDefined);        
<span class='line'>130</span>               console.info("bControllerValid", bControllerValid);
<span class='line'>131</span>               */</span><span class="WHIT">
<span class='line'>132</span> </span><span class="WHIT">              </span><span class="COMM">// Create a new controller</span><span class="WHIT">
<span class='line'>133</span> </span><span class="WHIT">              </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">bControlParamChanged</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">bControllerValid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">bControllerClassDefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>134</span> </span><span class="WHIT">                  </span><span class="COMM">/* console.info("---> new controller"); */</span><span class="WHIT">
<span class='line'>135</span> </span><span class="WHIT">                  </span><span class="NAME">gmwk.clearStage</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>136</span> </span><span class="WHIT">                  </span><span class="NAME">Controller</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">gmwk.create</span><span class="PUNC">(</span><span class="WHIT">
<span class='line'>137</span> </span><span class="WHIT">                      </span><span class="NAME">CurrentFragment</span><span class="PUNC">[</span><span class="NAME">sControlParam</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>138</span> </span><span class="WHIT">                      </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>139</span> </span><span class="WHIT">                          </span><span class="NAME">sTemplate</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">CurrentFragment</span><span class="PUNC">[</span><span class="NAME">sControlParam</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>140</span> </span><span class="WHIT">                          </span><span class="NAME">jqParentContainer</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">gmwk.getStageContainer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>141</span> </span><span class="WHIT">                      </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>142</span> </span><span class="WHIT">                  </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>143</span> </span><span class="WHIT">              </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>144</span> </span><span class="WHIT">              </span><span class="COMM">// Controller class is not defined</span><span class="WHIT">
<span class='line'>145</span> </span><span class="WHIT">              </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">bControllerClassDefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>146</span> </span><span class="WHIT">                  </span><span class="COMM">/* console.info("---> not found"); */</span><span class="WHIT">
<span class='line'>147</span> </span><span class="WHIT">                  </span><span class="NAME">fNotFound</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>148</span> </span><span class="WHIT">              </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>149</span> </span><span class="WHIT">              </span><span class="COMM">// Call Controller.route if it exists</span><span class="WHIT">
<span class='line'>150</span> </span><span class="WHIT">              </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT">
<span class='line'>151</span> </span><span class="WHIT">                </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">Controller</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT">
<span class='line'>152</span> </span><span class="WHIT">                </span><span class="PUNC">(</span><span class="NAME">Controller.route</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>153</span> </span><span class="WHIT">              </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>154</span> </span><span class="WHIT">                  </span><span class="COMM">//console.info("Controller.route");</span><span class="WHIT">
<span class='line'>155</span> </span><span class="WHIT">                  </span><span class="NAME">Controller.route</span><span class="PUNC">(</span><span class="NAME">CurrentFragment</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>156</span> </span><span class="WHIT">              </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>157</span> </span><span class="WHIT">          </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>158</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>159</span> </span><span class="WHIT">      
<span class='line'>160</span>       </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">fNotFound</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>161</span> </span><span class="WHIT">        </span><span class="COMM">// TODO: Create not found class</span><span class="WHIT">
<span class='line'>162</span> </span><span class="WHIT">        </span><span class="NAME">gmwk.clearStage</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>163</span> </span><span class="WHIT">        </span><span class="NAME">gmwk.getStageContainer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>164</span> </span><span class="WHIT">          </span><span class="PUNC">.</span><span class="NAME">html</span><span class="PUNC">(</span><span class="STRN">"&lt;div class='global_NotFound_content'>The specified URL was not found.&lt;/div>"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>165</span> </span><span class="WHIT">      </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>166</span> </span><span class="WHIT">  
<span class='line'>167</span>     </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>168</span> </span><span class="WHIT">    
<span class='line'>169</span>     </span><span class="NAME">gmwk.classes.Router</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Router</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>170</span> 
<span class='line'>171</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="NAME">jQuery</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">window.gmwk</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>172</span> </span></pre></body></html>